﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;

namespace Autorizacion_facturas_caja.Vacaciones
{
    public partial class frmVacaciones_Pago : Form
    {
        Manejador_Vacaciones MV = new Manejador_Vacaciones();
        objVacaciones obj1 = new objVacaciones();
        objRH obj = new objRH();
        int entrada;

        #region FUNCIONES
        public frmVacaciones_Pago(objVacaciones obj2, objRH obj3, int bandera)
        {
            InitializeComponent();
            entrada = bandera;

            obj1 = obj2;
            obj = obj3;
            groupBox4.Visible = false;
            groupBox5.Visible = false;
            groupBox1.Visible = false;
            groupBox3.Visible = false;
            groupBox6.Visible = false;


            if (entrada == 0)
            {
                groupBox1.Visible = true;
                groupBox3.Visible = true;
                llenar0();
            }
            else if (entrada == 1)
            {
                groupBox4.Visible = true;
                groupBox5.Visible = true;
                btnCalcular.Visible = false;
                llenar1();
            }
            else if (entrada == 2)
            {
                groupBox1.Visible = true;
                groupBox6.Visible = true;
                btnCalcular.Visible = false;
                llenar2();
            }
            else if (entrada == 3)
            {
                groupBox1.Visible = true;
                groupBox3.Visible = true;

                llenar3();
            }
        }
        //llena los campos de la forma
        private void llenar3()
        {
            DataTable datos = MV.DatosPrima(obj1.Id_Prima_Vacacional, "PRIMA3");
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj.Nombre_completo = (Info[0].ToString().Trim());
            obj.Puesto = (Info[1].ToString().Trim());
            obj.Departamento = (Info[2].ToString().Trim());
            obj.Nombre_empresa = (Info[3].ToString().Trim());
            obj1.Antigüedad = Convert.ToInt32(Info[4].ToString().Trim());
            obj1.Prima_Vacacional = (Info[5].ToString().Trim());
            obj1.Dias_Correspondientes = Convert.ToInt32(Info[6].ToString().Trim());
            obj1.Periodo = Convert.ToInt32(Info[7].ToString().Trim());
            obj.Nombre_Sucursal = (Info[8].ToString().Trim());
            obj1.Gratificacion = (Info[9].ToString().Trim());
            obj.Salario_dia = (Info[10].ToString().Trim());

            label6.Text = obj.Nombre_completo;
            label5.Text = obj.Nombre_Sucursal;
            label13.Text = obj.Departamento;
            label12.Text = obj.Nombre_empresa;
            label7.Text = obj.Puesto;
            label8.Text = obj1.Antigüedad.ToString();
            int periodo2 = obj1.Periodo + 1;
            label22.Text = obj1.Periodo.ToString();
            label15.Text = periodo2.ToString();
            txbSueldo.Text = obj.Salario_dia;
            txbPrima.Text = obj1.Prima_Vacacional;
            label20.Text = obj1.Dias_Correspondientes.ToString();
            txbGratificacion.Text = obj1.Gratificacion;
        }
        //llena los campos de la forma
        private void llenar2()
        {

            DataTable datos = MV.DatosPrima(obj1.Id_Prima_Vacacional, "PRIMA2");
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj.Nombre_completo = (Info[0].ToString().Trim());
            obj.Puesto = (Info[1].ToString().Trim());
            obj.Departamento = (Info[2].ToString().Trim());
            obj.Nombre_empresa = (Info[3].ToString().Trim());
            obj1.Antigüedad = Convert.ToInt32(Info[4].ToString().Trim());
            obj1.Prima_Vacacional = (Info[5].ToString().Trim());
            obj1.Dias_Correspondientes = Convert.ToInt32(Info[6].ToString().Trim());
            obj1.Periodo = Convert.ToInt32(Info[7].ToString().Trim());
            obj.Nombre_Sucursal = (Info[8].ToString().Trim());
            obj1.Gratificacion = (Info[9].ToString().Trim());
            obj1.Fecha_Pago = Convert.ToDateTime(Info[10].ToString().Trim());
            obj.Salario_dia = (Info[11].ToString().Trim());

            label6.Text = obj.Nombre_completo;
            label5.Text = obj.Nombre_Sucursal;
            label13.Text = obj.Departamento;
            label12.Text = obj.Nombre_empresa;
            label7.Text = obj.Puesto;
            label8.Text = obj1.Antigüedad.ToString();
            int periodo2 = obj1.Periodo + 1;
            label22.Text = obj1.Periodo.ToString();
            label15.Text = periodo2.ToString();
            label40.Text = obj.Salario_dia;
            label41.Text = obj1.Gratificacion;
            label42.Text = obj1.Fecha_Pago.ToShortDateString();
            label43.Text = obj1.Prima_Vacacional;
            label20.Text = obj1.Dias_Correspondientes.ToString();

        }
        //llena los campos de la forma
        private void llenar1()
        {
            label6.Text = obj.Nombre + " " + obj.Apellidos;
            label5.Text = obj.Nombre_Sucursal;
            label13.Text = obj.Departamento;
            label12.Text = obj.Nombre_empresa;
            label7.Text = obj.Puesto;
            label31.Text = obj1.Dias_Pagar.ToString();
            label33.Text = obj1.Monto_Dia.ToString();
            label32.Text = obj1.Monto_Total.ToString();
            label34.Text = obj1.Fecha_Pago.ToShortDateString();
            label35.Text = obj1.Justificacion;

        }
        //llena los campos de la forma
        private void llenar0()
        {
            DataTable datos = MV.DatosPrima(obj1.Id_Vacaciones, "PRIMA1");
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj.Nombre_completo = (Info[0].ToString().Trim());
            obj.Puesto = (Info[1].ToString().Trim());
            obj.Departamento = (Info[2].ToString().Trim());
            obj.Nombre_empresa = (Info[3].ToString().Trim());
            obj1.Antigüedad = Convert.ToInt32(Info[4].ToString().Trim());
            obj1.Prima_Vacacional = (Info[5].ToString().Trim());
            obj1.Dias_Correspondientes = Convert.ToInt32(Info[6].ToString().Trim());
            obj1.Periodo = Convert.ToInt32(Info[7].ToString().Trim());
            obj.Salario_dia = (Info[8].ToString().Trim());
            obj.Nombre_Sucursal = (Info[9].ToString().Trim());

            if ((Info[10].ToString().Trim()) != "")
            {
                obj1.Fecha_Pago = Convert.ToDateTime(Info[10].ToString().Trim());
                dateTimePicker1.Value = obj1.Fecha_Pago;
            }

            label6.Text = obj.Nombre_completo;
            label5.Text = obj.Nombre_Sucursal;
            label13.Text = obj.Departamento;
            label12.Text = obj.Nombre_empresa;
            label7.Text = obj.Puesto;
            label8.Text = obj1.Antigüedad.ToString();
            int periodo2 = obj1.Periodo + 1;
            label22.Text = obj1.Periodo.ToString();
            label15.Text = periodo2.ToString();
            txbSueldo.Text = obj.Salario_dia;
            txbPrima.Text = obj1.Prima_Vacacional;
            label20.Text = obj1.Dias_Correspondientes.ToString();
            txbGratificacion.Text = "0";

        }
        #endregion

        #region BOTONES
        //realiza el calculo de la prima
        private void btnCalcular_Click(object sender, EventArgs e)
        {
            double grat = Convert.ToDouble(txbGratificacion.Text);

            txbPrima.Text = Math.Round((Convert.ToDouble(txbSueldo.Text) * Convert.ToDouble(label20.Text) * .25) + (grat)).ToString();
        }
        //guarda los datos del pago
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (entrada == 0 || entrada == 3)
            {
                obj1.Monto_Prima = txbPrima.Text;
                obj1.Fecha_Pago = dateTimePicker1.Value;
                obj1.Gratificacion = txbGratificacion.Text;
                obj1.Monto_Dia = txbSueldo.Text;
                bool resp = MV.pagar_prima(obj1.Id_Prima_Vacacional, obj1.Monto_Prima, obj1.Fecha_Pago, obj1.Gratificacion, obj1.Monto_Dia);
                if (resp)
                {
                    MessageBox.Show("SE AGREGARON LOS DATOS CORRECTAMENTE", "AVISO");
                    Close();
                    /*frmVacaciones_Reporte_Pagos fvrp = new frmVacaciones_Reporte_Pagos(obj1.Id_Prima_Vacacional, "PRIMA");
                    fvrp.ShowDialog();*/
                }
                else { MessageBox.Show("NO SE PUDIERON AGREGAR LOS DATOS", "ALERTA"); }
            }
            else if (entrada == 2)
            {
                bool resp = MV.VacPagos(obj1.Id_Prima_Vacacional, "PRIMA VACACIONAL");
                if (resp)
                {
                    MessageBox.Show("SE AUTORIZO EL PAGO DE PRIMA", "AVISO");
                    Close();
                    frmVacaciones_Reporte_Pagos fvrp = new frmVacaciones_Reporte_Pagos(obj1.Id_Prima_Vacacional, "PRIMA");
                    fvrp.ShowDialog();
                }
                else { MessageBox.Show("NO SE REALIZO LA AUTORIZACION", "ALERTA"); }
            }
            else if (entrada == 1)
            {
                if (obj1.Tipo.Trim() == "NORMALES")
                {
                    obj1.Tipo_Dias = "DIAS VACACIONES";
                }
                else if (obj1.Tipo.Trim() == "PENDIENTES")
                {
                    obj1.Tipo_Dias = "DIAS ACOMULADOS";
                }
                bool resp = MV.VacPagos(obj1.Id_Vacaciones_Pago, obj1.Tipo_Dias);
                if (resp)
                {
                    MessageBox.Show("SE AUTORIZO EL PAGO DE LOS DIAS", "AVISO");
                    Close();
                    frmVacaciones_Reporte_Pagos2 form = new frmVacaciones_Reporte_Pagos2(obj1.Id_Vacaciones_Pago);
                    form.ShowDialog();
                }
                else { MessageBox.Show("NO SE REALIZO LA AUTORIZACION", "ALERTA"); }
            }
        }
        //cierra la forma
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }
        #endregion

        #region  EVENTOS
        //tips de ayuda
        private void frmVacaciones_Pago_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(btnAceptar, "ACEPTAR");
            toolTip1.SetToolTip(btnCancelar, "CANCELAR");
            toolTip1.SetToolTip(btnCalcular, "CALCULAR");
        }
        #endregion
    }
}
